<?php

require_once '..' . DS . '/DAO/Conexao.php';
require_once 'BeanMembro.php';
require_once 'BeanCidade.php';
require_once 'BeanEstado.php';
require_once 'BeanSexo.php';
require_once 'BeanTipoUsuario.php';
require_once 'BeanTesoureiro.php';
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of ModelMembro
 *
 * @author David
 */
class ModelTesoureiro {

    public $p = null;

    public function ModelTesoureiro() {
        $this->p = Conexao::Intancia()->Db();
    }

    /**
     * Retorna tesoureiros
     * @param type $codigo
     * @return \BeanTesoureiro
     */
    public function getMembrosTesoureiros($codigo) {
        $sql = "SELECT 
                    a.mem_id,
                    a.mem_nome,
                    a.mem_cpf,
                    a.mem_endereco,
                    a.mem_bairro,
                    a.mem_email,
                    date_format(a.mem_nascimento, '%d/%m/%Y') mem_nascimento,
                    a.mem_ativo,
                    b.cid_id,
                    b.cid_descricao,
                    c.est_id,
                    c.est_descricao,
                    c.est_sigla,
                    d.tusu_id,
                    d.tusu_descricao,
                    e.sex_id,
                    e.sex_descricao,
                    f.tes_id
                FROM membro a
                INNER JOIN cidade b ON a.fk_cid_id = b.cid_id
                INNER JOIN estado c ON b.fk_est_id = c.est_id
                INNER JOIN tipo_usuario d ON a.fk_tusu_id = d.tusu_id
                INNER JOIN sexo e ON a.fk_sex_id = e.sex_id
                LEFT JOIN tesoureiro f ON (a.mem_id = f.fk_mem_id AND f.tes_exonerado IS NULL)";

        // utiliza na busca por codigo
        if ($codigo != "") {
            $sql .= " WHERE a.mem_id = :codigo";
        }

        $sql .= " ORDER BY f.tes_id DESC;";

        $stmt = $this->p->prepare($sql);

        // utiliza na busca por codigo
        if ($codigo != "") {
            $stmt->bindValue(':codigo', $codigo, PDO::PARAM_STR);
        }

        $res = $stmt->execute();

        $resultado = array();
        if ($res != 1) {
            $resultado = "erro";
        } else {
            while ($linha = $stmt->fetch()) {
                $beanMembro = new BeanMembro();
                $beanMembro->codigo = $linha["mem_id"];
                $beanMembro->nome = $linha["mem_nome"];
                $beanMembro->cpf = $linha["mem_cpf"];
                $beanMembro->endereco = $linha["mem_endereco"];
                $beanMembro->bairro = $linha["mem_bairro"];
                $beanMembro->email = $linha["mem_email"];
                $beanMembro->nascimento = $linha["mem_nascimento"];

                // instancia tipo usuario para inserir a tipo do usuário do membro
                $beanTipoUsuario = new BeanTipoUsuario();
                $beanTipoUsuario->codigo = $linha["tusu_id"];
                $beanTipoUsuario->descricao = $linha["tusu_descricao"];

                $beanMembro->tipo = $beanTipoUsuario;
                $beanMembro->ativo = $linha["mem_ativo"];

                // instancia cidade para inserir a cidade do membro
                $beanCidade = new BeanCidade();
                $beanCidade->codigo = $linha["cid_id"];
                $beanCidade->cidade = $linha["cid_descricao"];

                // instancia estado para inserir dentro da cidade
                $beanEstado = new BeanEstado();
                $beanEstado->codigo = $linha["est_id"];
                $beanEstado->estado = $linha["est_descricao"];
                $beanEstado->sigla = $linha["est_sigla"];

                $beanSexo = new BeanSexo();
                $beanSexo->codigo = $linha["sex_id"];
                $beanSexo->sexo = $linha["sex_descricao"];

                $beanMembro->beanSexo = $beanSexo;

                $beanCidade->beanEstado = $beanEstado;

                $beanMembro->beanCidade = $beanCidade;

                $beanTesoureiro = new BeanTesoureiro();
                $beanTesoureiro->BeanMembro = $beanMembro;
                $beanTesoureiro->codigo = $linha["tes_id"];

                $resultado[] = $beanTesoureiro;
            }
        }
        return $resultado;
    }

    /**
     * Nomeia tesoureiro
     * @param type $membro
     * @param type $pastor
     * @return string
     */
    public function setNomear($membro, $pastor) {
        $sql = "INSERT INTO tesoureiro (fk_mem_id, fk_pas_id, tes_nomeado) 
                    VALUES 
                      (:membro, 
                        (SELECT MAX(pas_id) FROM pastor WHERE fk_mem_id = :pastor), 
                        now())";

        $stmt = $this->p->prepare($sql);
        $stmt->bindValue(':membro', $membro, PDO::PARAM_STR);
        $stmt->bindValue(':pastor', $pastor);
        $res = $stmt->execute();

        $resultado = array();
        if ($res != 1) {
            $resultado = "erro";
        } else {
            $resultado = $this->setTipoUsuario($membro, 2);
        }
        return $resultado;
    }

    /**
     * Exonera o tesoureiro
     * @param type $membro
     * @return string
     */
    public function setExonarar($membro) {
        $sql = "UPDATE tesoureiro SET tes_exonerado = NOW() WHERE fk_mem_id = :codigo;";

        $stmt = $this->p->prepare($sql);
        $stmt->bindValue(':codigo', $membro);
        $res = $stmt->execute();

        $resultado = array();
        if ($res != 1) {
            $resultado = "erro";
        }else{
            $resultado = $this->setTipoUsuario($membro, 1);
        }
        
        return $resultado;
    }

    /**
     * Altera o tipo do usuario na tabela membro
     * @param type $membro
     * @param type $tipo
     * @return string
     */
    public function setTipoUsuario($membro, $tipo) {
        
        // atualiza o tipo do usuario
        $sql = "UPDATE membro SET fk_tusu_id = :tipo WHERE mem_id = :membro";
        
        $stmt = $this->p->prepare($sql);
        $stmt->bindValue(':tipo', $tipo, PDO::PARAM_STR);
        $stmt->bindValue(':membro', $membro, PDO::PARAM_STR);
        $resultado = $stmt->execute();

        if ($resultado != 1) {
            $resultado = "erro";
        }
        
        return $resultado;
    }

}